// 指向数组的指针
#include <iostream>
using namespace std;

// 传递数组
// 合法的: int param[], int param[5], int *param
void print_all(int param[])
{
    for (int i = 0; i < 5; i++)
    {
        cout << param + i << ": " << *(param + i) << endl;
    }

    return;
}

int *get_array()
{
    // 不加 static: address of stack memory associated with local variable
    static int balance[5] = {6, 7, 8, 9, 10};
    return balance;
}

int main()
{
    // 函数指针
    int *(*ga)() = get_array;

    int balance[5] = {1, 2, 3, 4, 5};

    // 合法的
    int *p = balance;
    p = ga();

    // 使用指针的数组值
    print_all(p);
    cout << endl;

    // 使用balance作为地址的数组值
    for (int i = 0; i < 5; i++)
    {
        cout << *(balance + i);
    }
    cout << endl;

    return 0;
}